home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 10
/
AACD 10.iso
/
AACD
/
Online
/
SpeakFreely
/
src
/
lpc10
/
difmag.c
< prev
next >
Wrap
C/C++ Source or Header
|
2000-05-18
|
1KB
|
49 lines
/***********************************************************************
*
* DIFMAG Version 49
*
**********************************************************************
*
* Compute Average Magnitude Difference Function
*
* Inputs:
* SPEECH - Low pass filtered speech
* LPITA - Length of speech buffer
* TAU - Table of lags
* LTAU - Number of lag values to compute
* MAXLAG - Maximum possible lag value
* Outputs:
* AMDF - Average Magnitude Difference for each lag in TAU
* MINPTR - Index of minimum AMDF value
* MAXPTR - Index of maximum AMDF value
*/
#include <math.h>
#include "lpcdefs.h"
difmag( speech, tau, ltau, maxlag, amdf, minptr, maxptr )
int maxlag, *minptr, *maxptr, ltau;
int tau[];
float speech[], amdf[];
{
int i, j, n1, n2;
float sum;
*minptr = 1;
*maxptr = 1;
for(i=1;i<=ltau;i++) {
n1 = (maxlag-tau[i]) *0.5 + 1;
n2 = n1 + MAXWIN - 1;
sum = 0.;
for(j=n1;j<=n2;j+=4) {
sum += (float)fabs((double) (speech[j] - speech[j+tau[i]]) );
}
amdf[i] = sum;
if( amdf[i] < amdf[*minptr])
*minptr = i;
if( amdf[i] > amdf[*maxptr])
*maxptr = i;
}
}